home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 441 / dlibs12 / getbuf.c < prev    next >
C/C++ Source or Header  |  1990-11-23  |  813b  |  35 lines

  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. static unsigned long    _blksiz = (1<<14);    /* 16K initial heap size */
  5.  
  6. static unsigned char *_malloc(size)
  7.     int size;
  8.     {
  9.     register unsigned long _oldsiz;
  10.     register unsigned char *rv;
  11.  
  12.     _oldsiz = _BLKSIZ;
  13.     _BLKSIZ = _blksiz;
  14.     rv = ((unsigned char *) malloc(size));
  15.     _BLKSIZ = _blksiz = _oldsiz;
  16.     return(rv);
  17.     }
  18.  
  19. _getbuf(fp)        /* allocate a buffer for a stream */
  20.     register FILE *fp;
  21.     {
  22.     if((fp->_flag & _IONBF)
  23.     || ((fp->_base = _malloc(fp->_bsiz = BUFSIZ)) == NULL))
  24.         {
  25.         fp->_flag &= ~(_IOFBF | _IOLBF | _IONBF);
  26.         fp->_flag |= _IONBF;
  27.         fp->_base = &(fp->_ch);            /* use tiny buffer */
  28.         fp->_bsiz = 1;
  29.         }
  30.     else
  31.         fp->_flag |= _IOMYBUF;            /* use big buffer */
  32.     fp->_ptr = fp->_base;
  33.     fp->_cnt = 0;        /* start out with an empty buffer */
  34.     }
  35.